using System.Data.Odbc;
using System;
using Gestion_Api.AccesoDatos;
using System.Data.SqlClient;
using System.Data;

namespace Escuela
{
    public class Seminario : Cursable
    {
        
        public Seminario buscarEnDB(string id)
        {

            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();
            
            //hago el seminario
            Seminario sem = new Seminario();


            //busco el cursable
            string query = "coop_cursable_GetOne '" + id.Trim() + "'";

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            //Ejecuto query y lo cargo en un data reader
            SqlDataReader dr = ad.ExecuteReader(command);

            //Ejecuto query y lo cargo en un data reader
            //SqlDataReader dr = ad.ExecuteReader(query);

            //recorro data reader
            if (dr.HasRows)
            {
                
                while (dr.Read())
                {
                    sem.Id = Convert.ToInt32(dr[0]);
                    sem.Costo = Convert.ToDecimal(dr[2]);
                    sem.Cupos = Convert.ToInt32(dr[3]);
                    sem.CuposLibres = Convert.ToInt32(dr[4]);
                    sem.Dia = dr[5].ToString();
                    sem.Aula = dr[6].ToString();
                    sem.HoraFin = dr[7].ToString();
                    sem.HoraInicio = dr[8].ToString();
                    sem.FechaFin = Convert.ToDateTime(dr[9]);
                    sem.FechaInicio = Convert.ToDateTime(dr[10]);
                    sem.Observacion = dr[11].ToString();
                    //curso.Materia.Nombre = dr.GetString(255);
                    //curso.Matricula = dr.GetInt32(0);

                }

                //Cierro el data reader
                dr.Close();



                return sem;
            }
            else
            {
                //no encontre registros en la DB
                return null;
            }
        }
        
        public int agregarDB(Seminario sem, int idMateria, Profesor pr)
        {
            //Genero la clase de conexion
            AccesoDB ad = new AccesoDB();

            //doy de alta el cursable
            //genero query
            string query = "coop_cursable_Insert";
            query += "'" + sem.Costo + "', ";
            query += "'" + sem.Cupos + "', ";
            query += "'" + sem.CuposLibres + "', ";
            query += "'" + sem.Dia + "', ";
            query += "'" + sem.aula + "', ";
            query += "'" + sem.HoraFin + "', ";
            query += "'" + sem.horaInicio + "', ";
            query += "'" + sem.FechaFin.ToString("yyyyMMdd") + "', ";
            query += "'" + sem.FechaInicio.ToString("yyyyMMdd") + "', ";
            query += "'" + sem.Observacion + "', ";
            query += "'" + idMateria + "', ";
            query += "'" + pr.id + "' ";
            //query += "'" + sem.CuposLibres + "', ";
            //query += "'" + sem.Dia + "'";

            SqlCommand command = new SqlCommand();
            //command.Connection = connection;
            command.CommandText = query;
            command.CommandType = CommandType.Text;

            //agrego el cursable a la DB
            int resp = ad.ejecQueryResp(command);

            //reasigo el texto
            command.CommandText = "coop_cursable_ultimoID";

            //obtengo el id del registro que ingrese
            //sem.Id = ad.ejecQuery("coop_cursable_ultimoID");
            SqlDataReader dr = ad.ExecuteReader(command);

            if (dr.HasRows)
            {
                while(dr.Read())
                {
                    sem.id = Convert.ToInt32(dr[0]);
                }
                dr.Close();
                //doy de alta en curso el nuevo cursable
                query = "coop_seminario_Insert";
                query += "'" + sem.Id + "'";

                //vuelvo a asgnar el texto
                command.CommandText = query;

                //resp = ad.ejecQuery(query);
                resp = ad.ejecQueryResp(command);

                //Genero las clases del curso
                this.darAltaClases(sem.FechaInicio, sem.FechaFin, pr, sem.Id);

                return resp;
            }
            else
            {
                return -1;
            }



           

            

        }


        public void darAltaClases(DateTime fInicio, DateTime fFin, Profesor pr, int idSem)
        {
            //Agrego la clase del seminario
            
                Clase cl = new Clase();
                cl.Fecha = fInicio;
                cl.Profesor1 = pr;
                cl.Observacion = "";

                cl.agregarDB(cl, idSem);
                this.clases.Add(cl);

        }

        public bool delSeminario(int idSeminario)
        {
            Seminario semi = this.buscarEnDB(Convert.ToString(idSeminario));
            if (semi == null)
            {
                return false;
            }
            else
            {
                AccesoDB ad = new AccesoDB();

                //genero query
                string query = "coop_cursable_Delete ";
                query += "'" + idSeminario + "'";


                SqlCommand command = new SqlCommand();
                //command.Connection = connection;
                command.CommandText = query;
                command.CommandType = CommandType.Text;

                int resp = ad.ejecQueryResp(command);
                return true;
            }
        }
    }
}
